BOOL ModifyMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL ); BOOL ModifyMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );
Возвращаемое значение
Отлично от нуля если функция успешна, иначе 0.
Параметры
nPosition
Определяет пункт меню который будет изменен. nFlags параметр может использоваться, чтобы интерпретировать nPosition следующими способами:
MF_BYCOMMAND Определяет, что параметр дает команду ID существующего пункта меню. Это - значение по умолчанию, если ни MF_BYCOMMAND ни MF_BYPOSITION не установлен. MF_BYPOSITION Определяет, что параметр дает позицию существующего пункта меню. Первый элемент - в позиции 0.
nFlags
Определяет, как nPosition интерпретируется и дает информацию относительно изменений, которые будут сделаны к пункту меню. Для списка флажков, которые могут быть установлены, см. AppendMenu функцию.
nIDNewItem
Определяет или команду ID изменяемого пункта меню или, если nFlags установлен к MF_POPUP, дескриптор всплывающего меню (HMENU). nIDNewItem параметр игнорируется (не необходимый) если nFlags установлен к MF_SEPARATOR.
lpszNewItem
Определяет содержание нового пункта меню. nFlags параметр может использоваться, чтобы интерпретировать lpszNewItem следующими способами:
MF_OWNERDRAW Содержит обеспеченное прикладная программой 32-разрядное значение, что прикладная программа может использовать, чтобы поддержать дополнительные данные, связанные с пунктом меню. Это 32-разрядное значение доступно прикладной программе, когда это обрабатывает MF_MEASUREITEM и MF_DRAWITEM. MF_STRING Содержит длинный указатель на строку с нулевым символом в конце или к CString. MF_SEPARATOR lpszNewItem параметр игнорируется.
pBmp
Указатель на объект CBitmap, который будет использоваться как пункт меню.
Замечания
Изменяет существующий пункт меню в позиции, определенной nPosition. Прикладная программа определяет новое состояние пункта меню, устанавливая значения в nFlags. Если эта функция заменяет всплывающее меню связанные пункты меню, это уничтожает старое всплывающее меню и освобождает память используемую меню.
Когда nIDNewItem определяет всплывающее меню это становится частью меню, в которое это вставлено. Если то меню разрушено, вставленное меню будет также разрушено. Вставленное меню должно отсоединиться из объекта CMenu, чтобы избежать конфликта.
Всякий раз, когда меню, которое постоянно находится в окне, изменено (отображается или нет окно), прикладная программа должна вызвать CWnd::DrawMenuBar. Чтобы изменять(заменять) атрибуты существующих пунктов меню, намного быстрее использовать CheckMenuItem и EnableMenuItem функции.